d2a14f
@@ -29,10 +29,8 @@
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.appender.routing.RoutingAppender;
-import org.apache.logging.log4j.core.config.AppenderControl;
 import org.apache.logging.log4j.core.config.Configurator;
 import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.impl.Log4jContextFactory;
@@ -248,14 +246,9 @@
public static void stopQueryAppender(String routingAppenderName, String queryId)
       // The appender is configured to use ${ctx:queryId} by registerRoutingAppender()
       try {
         Class<? extends RoutingAppender> clazz = routingAppender.getClass();
-        Method method = clazz.getDeclaredMethod("getControl", String.class, LogEvent.class);
+        Method method = clazz.getDeclaredMethod("deleteAppender", String.class);
         method.setAccessible(true);
-        AppenderControl control = (AppenderControl) method.invoke(routingAppender, queryId, null);
-        Appender subordinateAppender = control.getAppender();
-        if (!subordinateAppender.isStopped()) {
-          // this will cause the subordinate appender to close its output stream.
-          subordinateAppender.stop();
-        }
+        method.invoke(routingAppender, queryId);
       } catch (NoSuchMethodException | SecurityException | IllegalAccessException |
           IllegalArgumentException | InvocationTargetException e) {
         l4j.warn("Unable to close the operation log appender for query id " + queryId, e);
